package com.vote.business.mapper;

import java.util.List;
import com.vote.business.domain.VoteOption;
import com.vote.business.domain.vo.VoteOptionWithTitleVO;

/**
 * 投票选项Mapper接口
 * 
 * @author ruoyi
 * @date 2025-07-14
 */
public interface VoteOptionMapper 
{
    /**
     * 查询投票选项
     * 
     * @param optionId 投票选项主键
     * @return 投票选项
     */
    public VoteOptionWithTitleVO selectVoteOptionByOptionId(Long optionId);

    /**
     * 查询投票选项列表
     * 
     * @param voteOption 投票选项
     * @return 投票选项集合
     */
    public List<VoteOption> selectVoteOptionList(VoteOption voteOption);


    /**
     * 查询投票选项列表
     *
     * @param voteOptionWithTitleDTO 投票选项
     * @return 投票选项集合
     */
    public List<VoteOptionWithTitleVO> selectVoteOptionWithTitleDTOList(VoteOptionWithTitleVO voteOptionWithTitleDTO);
    /**
     * 新增投票选项
     * 
     * @param voteOption 投票选项
     * @return 结果
     */
    public int insertVoteOption(VoteOption voteOption);

    /**
     * 修改投票选项
     * 
     * @param voteOption 投票选项
     * @return 结果
     */
    public int updateVoteOption(VoteOption voteOption);

    /**
     * 删除投票选项
     * 
     * @param optionId 投票选项主键
     * @return 结果
     */
    public int deleteVoteOptionByOptionId(Long optionId);

    /**
     * 批量删除投票选项
     * 
     * @param optionIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteVoteOptionByOptionIds(Long[] optionIds);

    /**
     * 更新投票选项数
     * @param optionId
     * @return
     */
    public int incrementVoteCount(Long optionId);

    /**
     * 更新投票记录，更新投票选项票数
     * @param oldOptionId
     * @param optionId
     */
   public int updateVoteOptionCount(Long oldOptionId);
}
